#include <iostream>
using namespace std;
#include <string.h>

namespace ljx
{
  class string
  {
    public:
      string(const char* str = "")
        :_str(new char[strlen(str)+1])
      {
          strcpy(_str,str);
      }
      //拷贝构造
      //s2(s1)
      string(const string& s)
        :_str(new char[strlen(s._str)+1])
      {
          strcpy(_str,s._str);
      }
      //赋值拷贝重载
      //s2 =s1
      string& operator=(const string& s)
      {
          if(this!=&s)
          {
            char* tmp = new char[strlen(s._str)+1];
            strcpy(tmp,s._str);
            delete[] _str;
            _str = tmp;
          }
          return *this;
      }
      ~string()
      {
        delete[] _str;
        _str = nullptr;
      }
    private:
    char* _str;
  };

  void test1()
  {
    string s1("hello");
    string s2;
    string s3(s1);
    s2 =s3;
  }
}





int main()
{

  ljx::test1();
  return 0;
}
